# 如果你想要模拟欧拉方法解决微分方程的初值问题，例如求解以下形式的初值问题：
# [ y' = f(t, y) ] [ y(t_0) = y_0 ]
# 可以编写一个使用欧拉法迭代求解的简单实现：
import math


def euler_method(f, t0, y0, h, n_steps):
    # 初始化结果列表
    t_values = [t0]
    y_values = [y0]

    for _ in range(n_steps):
        # 计算下一个点的值
        y_next = y_values[-1] + h * f(t_values[-1], y_values[-1])
        t_next = t_values[-1] + h

        # 更新结果列表
        t_values.append(t_next)
        y_values.append(y_next)

    return t_values, y_values


# 示例：使用欧拉法解 y' = -y，y(0) = 1，在区间 [0, 2π] 上进行100步迭代
def f(t, y):
    return -y


t0 = 0
y0 = 1
h = 2 * math.pi / 100
n_steps = 100

t_solution, y_solution = euler_method(f, t0, y0, h, n_steps)
print(t_solution)
print(y_solution)